#pragma once

namespace fly
{
	namespace jld
	{
		namespace ds
		{
			template<typename D>
			class link_list
			{
			private:
				struct node
				{
					node* next;
					D d;
					node(node* n = NULL)
						:next(n)
					{

					}
				};
				node* header_;
				node* tail_;
				size_t size_;
			public:
				link_list();
				~link_list();
				void add(const D& d);
				void remove(const D& d);
				const size_t& size();
				bool empty();
				void pop_front();
				void clear();
				void print();
			};

		}
	}
}